package cn.itcast.dao.system;

import cn.itcast.domain.system.Role;
import cn.itcast.domain.system.User;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import java.util.List;


public interface UserDao {

	//根据企业id查询全部
	List<User> findAll(String companyId);

	//根据id查询
    User findById(String userId);

	//根据id删除
	void delete(String userId);

	//保存
	void save(User user);

	//更新
	void update(User user);

	/**
	 * 根据用户id查询用户角色中间表
	 * @param id
	 * @return
	 */
    Long findUserRoleByUserId(String id);

	/**
	 * 先解除用户角色的关系
	 * @param userId
	 */
    void deleteUserRoleByUserId(String userId);

	/**
	 *  用户添加角色
	 */
	void saveUserRole(String userId, String roleId);

	/**
	 * 根据email查询
	 * @param email
	 * @return
	 */
    User findByEmail(String email);

	/**
	 * 查询审核人
	 */
	@Select("SELECT * from pe_user `user` INNER JOIN pe_role_user pru on user.user_id = pru.user_id where\n" +
			"pru.role_id =#{roleId}")
	@Results({
			@Result(column = "user_id",property = "id"),
			@Result(column = "user_name",property = "userName")
	})
	List<User> findRoleReviewer(String roleId);
}